Gtk2Hs est une librairie graphique GUI pour Haskell basée sur Gtk+. Gtk+ est une boite à outils extensible, évoluée et multi-plateforme pour créer des interfaces graphiques.
Ce tutoriel est destiné à un programmeur Haskell de niveau intermédiaire et couvre ce qui est requis pour écrire les interfaces graphiques les plus classiques. Ceci est résumé dans la table des matières de ce tutoriel. Pour les utilisateurs avancés, la documentation de Gtk2Hs contient plus d'informations.
Gtk+ est une librairie de composants appelés "widgets", qui sont organisés dans un classement orienté objet. Dans Gtk2Hs, cela est implémenté en donnant à chaque widget à la fois un type Haskell et une classe Haskell. De cette façon, le système de type de Haskell est préservé et le programmeur a tous les avantages de la vérification du typage par le compilateur GHC et l'interpréteur. Gtk2Hs possède également des fonctions pour la conversion de types (casting).
Les widgets ont des attributs qui contrôlent leur comportement et leur apparence. Il y a deux fonctions générales pour définir et récupérer les attributs.
Pour définir un ou plusieurs attributs d'un widget, on utilise:
set widget [widgetAttr1 := foo, widgetAttr2 := fie, widgetAttr3 := bar]
Pour obtenir un attribut d'un widget, on utilise:
x <- get widget widgetAttr1
Il existe également des fonctions spécifiques pour fixer et obtenir les attributs, mais à l'avenir ces fonctions peuvent devenir obsolètes.
Le fonctionnement d'une application Gtk2Hs est déterminé par les actions de l'utilisateur telles que, cliquer sur la souris, appuyer sur une touche, sélectionner un bouton, etc… Ces actions sont appelées "événements" (events) et peuvent se matérialiser par l'émission d'un "signal". L'information sur les événements, par exemple le clique gauche ou droite à la souris , peut être capturée dans des champs de données qui peuvent être récupérées par le programmeur. Les signaux sont habituellement utilisés par des fonctions spécifiques pour ce type de widget. Elles sont listées dans la section Signaux de la documentation pour ce widget. La plupart de ces fonctions ont pour type IO () comme paramètres, mais certaines peuvent retourner des résultats. Le programmeur Gtk2Hs doit donc écrire ces fonctions qui déterminent le comportement du programme en réponse à l'action de l'utilisateur.
Enfin, définir l'organisation des widgets dans une application et déterminer l'apparence visuelle peut être fait graphiquement avec l'éditeur d'interface Glade. Gtk2Hs supporte intégralement Glade. Une introduction à Glade se trouve sur le site web de Gtk2Hs. Il est recommandé d'utiliser Glade lors de la programmation d'interfaces graphiques avec Gtk2Hs.